<?php
include "config.php";
include "Includes/conexion.class.php";
require_once "Includes/soloFun_Generales.php";
session_start();
include "Includes/solotrn_sesion.php";
?>
<link href="SoloStyles/Solostyles.css" rel="stylesheet" type="text/css">
<?php

//'on error resume next
//echo "sesion";
//echo "<pre>"; print_r($_SESSION); echo "</pre>";
$PERFIL = $_SESSION["co_perf"];
$NODO = $_SESSION["ptl"];

//'PERFIL="14"
$NODO = "1";

$SoloArrMenus = array();

$SoloSQL = "";
$SoloSQL .=  " select d.co_tran, c.co_modu, d.no_prog, d.ds_tran,1,b.ds_modu, d.nomostrar ";
$SoloSQL .=  " from solotb_modulo b, solotb_perfil_modulo c, solotb_modulo_transaccion d, solotb_nodos e ";
$SoloSQL .=  " where b.co_modu = c.co_modu and b.co_modu = d.co_modu and c.co_tran = d.co_tran ";
$SoloSQL .=  " and c.co_perf = $PERFIL";
$SoloSQL .=  " and b.nodo = $NODO";
$SoloSQL .=  " and b.nodo = e.id and c.nodo = e.id and d.nodo = e.id";
//'''   	$SoloSQL .=  " and d.nomostrar <> '1' "
$SoloSQL .=  " order by c.co_modu,d.co_tran,d.nomostrar ";
//echo $SoloSQL."<br/>";
    //'response.end
$oConexion = new Conexion($WORKFLOW["motor_base"], $WORKFLOW["db_usuario"], $WORKFLOW["db_password"], 
        $WORKFLOW["basedatos"], $WORKFLOW["servidor"], $WORKFLOW["flags"], $WORKFLOW["encoding"]);

$bandLogin = false;

//'    bEOF=rstran.EOF
   	//'echo rstran.EOF
	//'response.end
if(!$oConexion->EjecutarQuery($SoloSQL)){
//'	    response.redirect "default.asp?MiError=4"
    echo $oConexion->getErrorMessage();
    
}else{
    $bandLogin = true;
    $SoloArrMenus = $oConexion->getData("NUM");
//printArray($SoloArrMenus);
    $SoloVar_TotalFilasMenu = count($SoloArrMenus);
}
$oConexion->liberarResultado();
$oConexion->Cerrar();
//echo $SoloVar_TotalFilasMenu."<br/>";
//'	SoloArrMenus(2,1)= "default.asp?idl=1&ptl=3"
	//'ojo modificar esta validaci�n
?>
<script type="text/javaScript">
/********Rutinas generales para los casos Javascript***********/
/***Objetos globales definidos aqu�**********/
function oNavegador(  ) {
	this.nombre = navigator.appName;
	this.iniciar = iniciar;
	this.ponerModVer = ponerModVer;
	this.IE = this.nombre.toUpperCase().indexOf('MICROSOFT') >=0;
	this.NS = this.nombre.toUpperCase().indexOf('NETSCAPE') >=0;
	this.OP = this.nombre.toUpperCase().indexOf('OPERA') >= 0;
	this.XX = !this.IE && !this.NS && !this.OP;
	this.version = this.iniciar();
	this.Verent = parseInt(this.version);
	this.standard = (this.IE && this.Verent >=5) || (this.NS && this.Verent >=5)
	this.modVer = this.ponerModVer();
/* ======================================================================
	FUNCION:	iniciar( ), miembro de oNavegador
	ARGS: 		none.
	DEVUELVE:	nada
	DESCRIP:	Inicializa los valores del objeto
====================================================================== */
  function iniciar() {
  var ver = navigator.appVersion;
  if(ver+"" != "NaN")
	if (this.IE)
		{
		ver.match(/(MSIE)(\s*)([0-9].[0-9]+)/ig);
  		ver = RegExp.$3;
		}
  return ver;
  } //Termina la funcion iniciar el objeto
 //Selector para usar en sentencias switch
 //Los modelos de navegadores ser�n de la forma IE4, IE5, NS4, NS5 ...
  function ponerModVer()
  {
  if (this.IE) return "IE"+this.Verent;
  if (this.NS) return "NS"+this.Verent;
  if (this.OP) return "OP"+this.Verent;
  return "XXNN";
   }
}

window.miNavegador = new oNavegador()
window.miNavegador.iniciar();
/*=========================================================================
FUNCION:	objHtml(n, d), 
ARGS:		n: un atributo ID del elemento que se desea encontrar
			d: documento en el que se busca
RETURN:		Referencia javascript al elemento HTML cuyo ID es el atributo n
DESCRIP:	Esta funci�n busca un elemento HTML (un nodo) cuyo atributo ID sea igual al 
			que se pasa como primer argumento ( n ). La b�suqueda se realiza en el �rbol
			que se le indique como segundo argumento, si �ste no existe la busqueda se 
			realiza en document de la ventana actual. La funci�n es recursiva.
================================================================================*/			
function objHtml(n, d) { 
  var p,i,x;  
  if(!d) d=document; 
  if (miNavegador.standard)
	  x = d.getElementById(n)	
  if(!x && !(x=d[n]) && miNavegador.IE) 
      x=d.all[n]; 
  for (i=0; !x && i<d.forms.length; i++) 
      x=d.forms[$i][n];
  for(i=0; !x && d.layers &&i< d.layers.length; i++) 
      x=objHtml(n,d.layers[$i].document);
  return x;
}

//Busca un valor de estilo en un descriptor. Solo MSIE <5
//no llamar con otro explorador
function estiloActual(obj, estilo, atributo)
{
var regla;
var devolver=null
//Si el estilo est� definido en linea
if (!mie) return obj[atributo];
if (obj.style[atributo] != '') return obj.style[atributo]
if (verex >=5)
	devolver = obj.currentStyle[atributo]
else{
	regla = buscaEstilo(estilo)
	devolver = regla.style[atributo];	
	}
return devolver;
}
function buscaEstilo(estilo)
{
var hj, fin, hojas = document.styleSheets;
for (hj = 0; hj < hojas.length; hj++)
	{
	reglas = hojas[hj].rules;
	for (ti=0; ti< reglas.length; ti++)       
		{
		if (reglas[ti].selectorText.toUpperCase() == '.'+estilo.toUpperCase())
			{
			devolver = reglas[ti];	
			fin = true;
			break;
			}
		}	
	if (fin) break;		
	}		
return reglas[ti];
}


/****************************FIN DE RUTINAS GENERALES****************************/


/****************************Objetos items del Grupo de items (una capa DIV)
*******************************************************************************************/

function oItemJer(ident, it, enlace, padre, txt_enl, dest)
{
this.ident = ident;
this.titulo = it;
this.enlace = enlace;
this.dest = dest||'';
this.grPadre = padre;
this.enlazado = (typeof(txt_enl)=='object')?txt_enl:null;
this.descrip = (typeof(txt_enl)=='object')?null:txt_enl;
this.num = 0;
this.tipo = 0;  //0 Debajo, 1 Derecha
//M�todos
this.dibujar = oItemJer_dibujar;
this.entrar = oItemJer_entrar;
this.salir = oItemJer_salir;
this.pulsar = oItemJer_click;
this.resaltar = oItemJer_resaltar;
this.separadorNS4 = separadorNS4;

/*========================================================================================
FUNCION:		oItemJer_click()
ARGUMENTOS:		no
DEVUELVE:		nada
DESCRIPCION:	Simplemente dirige la p�gina a donde indique la propiedad enlace
========================================================================================*/
function oItemJer_click(obj)
{
  location.href = this.enlace;
}
/*========================================================================================
FUNCION:		oItemJer_salir(obj, evnt)
ARGUMENTOS:		obj: objeto que dispara la rutina
				evnt: objeto event.
DEVUELVE:		---
DESCRIPCION:	Act�a cuando el rat�n abandona un elemento (oItemJer) del men� (oBrItems).
				Repone el estilo normal del elemento seg�n la propiedad estNormal del 
				objeto padre (oGrItem al que pertenece este elemento).
				Si existiera un men� enlazado lo cierra
				Si existe una nota explicativa la cierra.
========================================================================================*/
function oItemJer_salir(obj, evnt)
{
var menuPadre = this.grPadre;
var capaPadre = menuPadre.cuerpoHtml;
var capaDescr = menuPadre.descrHtml;
menuPadre.actual = this.num;
switch (miNavegador.modVer) { 
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
	capaDescr.style.visibility = "hidden";
	if (this.enlazado){
		if (!this.enlazado.cuerpoHtml.contains(event.toElement))
			this.enlazado.cerrar(evnt);
		event.cancelBubble = true; 	
		}	
	else
		this.resaltar(false);
	break;
case "NS5":
	capaDescr.style.visibility = "hidden";
	if (this.enlazado)
		{
		evnt.cancelBubble = true;	
		if (evnt.target.id != this.enlazado.cuerpoHtml.id )
			this.enlazado.cerrar(evnt);
		}	
	else
		this.resaltar(false);
	break;	
case "NS4":
	if (this.enlazado)
		{
		this.enlazado.ocultable = true;
		this.enlazado.ocultar(100);
		}
	else
		{
		capaDescr.visibility = "hidden";
		this.resaltar(false);	
		}
//	this.grPadre.ocultable = true;	
	menuPadre.actual = -1; 
	break;
default:
	alert("Navegador no soportado");
	}
}

/*========================================================================================
FUNCION:		oItemJer_entrar(obj, evnt)
ARGUMENTOS:		obj: objeto DIV o LAYER que hace la llamada
				evnt: evento (event)
DEVUELVE:		---
DESCRIPCION:	Se usa para cuando el rat�n se sit�a sobre un oItemJer del men�. 
				En resumen lo que hace es:
				Resaltar el men� cambiando su estilo al	indicado en la propiedad 
				estActivo del objeto del que depende el oItemJer actual. 
				Mostrar la nota explicativa �
				Abrir el men� enlazado si existe				
========================================================================================*/
function oItemJer_entrar(obj, evnt)
{
var menuPadre = this.grPadre;
var posHor = 0; posVer= 0; limder=0;
capaPadre = menuPadre.cuerpoHtml;
capaDescr = menuPadre.descrHtml;
if (menuPadre.padre)	
	menuPadre.padre.grPadre.ocultable = false;	
this.resaltar(true);
menuPadre.actual = -1;
switch (miNavegador.modVer) { 
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
	event.cancelBubble = true;
case "NS5":
	posVer = capaPadre.offsetTop;
	posHor = parseInt(capaPadre.style.left);
	limder = (miNavegador.NS)?document.width:document.body.offsetWidth;
	if (this.enlazado)
		{
		if (this.enlazado.tipo == 0)
			posVer = posVer + capaPadre.offsetHeight; 
		else
			posHor += capaPadre.offsetWidth;
			
		if (posHor + this.enlazado.cuerpoHtml.offsetWidth +30>= limder)
			posHor = parseInt(capaPadre.style.left)- this.enlazado.cuerpoHtml.offsetWidth;
		this.enlazado.situar(posHor, obj.offsetTop+posVer); 
		this.enlazado.mostrar();
		this.enlazado.ocultable=false;
		menuPadre.ocultable = false
		}
	break;
case "NS4":
	capaItem = capaPadre.layers[this.ident];
	if(menuPadre.actual > 0 ) return false;
	menuPadre.actual = this.num;
	posHor = capaPadre.pageX;
	if (posHor+capaDescr.clip.width +50> screen.width)
			posHor =  capaPadre.pageX - capaDescr.clip.width -capaPadre.clip.width;
	capaDescr.pageY = capaItem.pageY;
	capaDescr.pageX = posHor + capaItem.clip.width;
	this.resaltar(true);
	if (this.enlazado)
		{
		if (this.enlazado.tipo == 0){
			posHor = parseInt(capaPadre.left);
			posVer = capaPadre.pageY + parseInt(capaPadre.clip.height);
			}
		else
			{
			posHor = parseInt(capaPadre.clip.width)+parseInt(capaPadre.left);
			posVer = capaPadre.pageY + capaItem.top;
			}	
		if (posHor + capaPadre.clip.width + 50 > screen.width)
			posHor =  capaPadre.pageX - this.enlazado.cuerpoHtml.clip.width;
		this.enlazado.situar(posHor, posVer); 
		this.enlazado.mostrar();
		this.enlazado.ocultable=false;
		menuPadre.ocultable = false
	    }
	else{
		//Escribe descripci�n
		/*capaDescr.document.open(); 
		capaDescr.document.write('<div id="par" class="'+menuPadre.estDesc + '">');
		capaDescr.document.write(this.descrip+" es la descripci�n"+'</div>'); 
		capaDescr.document.close();
		capaDescr.clip.height=capaDescr.document.layers[0].clip.height; 
		capaDescr.visibility = "visible"; */
		//Termina con la descripci�n
		}
	break;
default:
	alert("Navegador no soportado");
 } 
}
/*========================================================================================
FUNCION:		oItemJer_resaltar(sino)
ARGUMENTOS:		sino: true: resaltar, false poner en normal
DEVUELVE:		------
DESCRIPCION:	Activa o desactica el estilo resaltado del elemento oItemJer actual. Lo hace
				modificando los estilos CSS que lee desde el oGrItem del que depende este 
				elemento.
========================================================================================*/
function oItemJer_resaltar(sino)
{
var capaItem=objHtml(this.ident);
var cursor="pointer";
var menuPadre = this.grPadre, izq;
switch (miNavegador.modVer){
case "IE4":
case "IE5":
case "IE6":
case "IE7":
	cursor="hand";
case "IE8":
case "NS5":
	if(sino)
		capaItem.className = menuPadre.estItemAct;
	else
		capaItem.className = menuPadre.estItemInac;
	capaItem.style.cursor=cursor;
	break;
case "NS4":
	ancho = menuPadre.cuerpoHtml.clip.width;
	if (document.classes[menuPadre.estBase].all.borderLeftWidth)
		ancho -= parseInt(document.classes[menuPadre.estBase].all.borderLeftWidth);
	if (document.classes[menuPadre.estBase].all.borderRightWidth)	
		ancho -= parseInt(document.classes[menuPadre.estBase].all.borderRightWidth);
	if (sino)
		{
		capaItem.bgColor = document.classes[menuPadre.estItemAct].all.backgroundColor;
		capaItem.clip.width = ancho;
		with(capaItem){ 
			document.open(); 
			if (this.num>0)
				this.separadorNS4(menuPadre.bordeinf, ancho);
			document.write('<a href = "'+this.enlace+'"');
			if (this.enlace=='')
				document.write('onclick="return false"');
			document.write('class="'+menuPadre.estItemAct+'">'); 
			document.write( this.titulo);
			document.write('</a>');
			document.close();
			}
		}
	else
		{
		capaItem.bgColor = document.classes[menuPadre.estItemInac].all.backgroundColor; 
		capaItem.width = ancho;
		with(capaItem){ 
			document.open();
			if (this.num>0)
				this.separadorNS4(menuPadre.bordeinf, ancho);
			document.write('<span class="'+menuPadre.estItemInac+'">'+this.titulo) 
			document.write('</span>')
			document.close(); 
			}
		}
	break;
	}		
}
/*========================================================================================
FUNCION:		oIem_dibujar(num, ancho, alto)
ARGUMENTOS:		num: n�mero de orden del elemento
				ancho: ancho del elemento
				alto: alto del elemento (NN)
DEVUELVE:		---
DESCRIPCION:	Dibuja un objeto oItemJer, es decir, un elemento de un objeto oGrItem
========================================================================================*/
function oItemJer_dibujar(num, ancho, alto, dest)
{
//alert(num+ ' - ' + ancho + ' - ' + alto + ' - ' + dest)
var ident = this.ident, nsColor; 
var menuPadre = this.grPadre;
var idobj = menuPadre.vble+".elementos["+num+"]";
//RJMC
var str1 = idobj;
var str2 ="CABECERA";
var s = str1.indexOf(str2);
if (s>=0 ){	vheight=25;}//menu1	alto menu
else{	vheight=25;}//menu2
var est = menuPadre.estItemInac; 
var izq, psup=1, anborde;
this.num = num;
switch (miNavegador.modVer){
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
	anborde = "100%";
case "NS5":	
	ancho = "100%";
	destino='iframe';
//	cadena = '<a href = "'+this.enlace+'" target="'+this.dest+'" onclick="return false"  style="text-decoration:none;color:inherit">'
	cadena = '<a href = "'+this.enlace+'" target="'+this.dest+'" onclick="return false"  style="text-decoration:none;color:inherit">'
	cadena = cadena+' <div onmouseover ="'+idobj+'.entrar(this,event)" onmouseout = "'+idobj+'.salir(this,event)"';
	cadena = cadena+' id="'+ident+'"  class="'+est+'" style="width:'+ancho+'px; border-bottom:'+this.grPadre.bordeinf+';width:'+anborde+'">' + this.titulo;
	//alert(cadena)
	document.write('<a href = "'+this.enlace+'" ')
	if (this.dest !='')
	   document.write('target="'+this.dest+'" ');
	if (this.enlace == '')
		document.write('onclick="return false" ');
	document.write(' style="text-decoration:none;color:inherit">');
	document.write('<div onmouseover ="'+idobj+'.entrar(this,event)"');
	document.write(' onmouseout = "'+idobj+'.salir(this,event)"');
//	document.write(' id="'+ident+'"  class="'+est+'" style="width:'+ancho+'px;');
	//personalizar algo 'RMC
	document.write(' id="'+ident+'"  class="'+est+'" style=" height:'+vheight+'; width:'+ancho+'px;');
	document.write(' border-bottom:'+this.grPadre.bordeinf+';width:'+anborde+'">');
	document.write(this.titulo);
	if (this.enlace=='')
//rjmc		document.write('<img src="images/arrows.gif">');
		document.write('&nbsp;');
	document.write('</div></a>');
	
	break;
case "NS4":
	izq=0;
	if (document.classes[menuPadre.estBase].all.borderLeftWidth)
		{
		ancho -= 2*parseInt(document.classes[menuPadre.estBase].all.borderLeftWidth);
		izq = parseInt(document.classes[menuPadre.estBase].all.borderLeftWidth);
		}
	if (document.classes[menuPadre.estInac].all.paddingLeft)
		ancho -= parseInt(document.classes[menuPadre.estInac].all.paddingLeft);
	if (document.classes[menuPadre.estBase].all.borderTopWidth && num==0)
		psup = parseInt(document.classes[menuPadre.estBase].all.borderTopWidth);
	if(num>0) psup = parseInt(menuPadre.bordeinf[0]);
	if (isNaN(psup)) psup=1; 
	nsColor=document.classes[menuPadre.estItemInac].all.backgroundColor
	document.write('<layer id="'+ident+'" class="'+est+'" top="'+(alto*num+psup)+'px"');
	document.write(' left="'+izq+'px" height="'+alto+'px"');
	document.write(' width="'+ancho+'" bgColor="'+nsColor+'"')
	document.write(' onmouseover ="'+ idobj+'.entrar(this.id,event)"');
	document.write(' onmouseout = "'+ idobj+'.salir(this.id,event)" >');
	if (num>0) this.separadorNS4(this.grPadre.bordeinf, ancho);
	document.write(this.titulo);
	document.write('</layer>');
	break;	
	}
}
/*========================================================================================
FUNCION:		separadorNS4(borde, ancho)
ARGUMENTOS:		borde: color del separador, estilo y grueso
				ancho: ancho del separador
DEVUELVE:		---
DESCRIPCION:	NN4 no usa bien los bordes de bloques as� que se contruye una caja
				de alto el grueso del borde, ancho el ancho del borde y color el color 
				del borde
========================================================================================*/
function separadorNS4(borde, ancho)
	{
	document.write('<layer id="_brd" height="'+borde[0]+'" z-index="auto" left="0" top="0"');
	document.write('bgcolor="'+borde[2]+'" clip="0,0,'+ancho+','+borde[0]+'"></layer>');
	}
} 
//FIN DEL OBJETO oItemJer (Entradas de men�)
//****************************Objeto Contenedor de items 
function oGrItems(ident, estBase, estNorm, estAct, estDesc, vis) 
{ 
this.ident = ident+"_G"; 
this.descr = ident+"_D";
this.cuerpoHtml = null;
this.descrHtml = null;
this.vble = ident;
this.visible = vis;
this.estBase = estBase || null;
this.estItemAct = estAct;
this.estItemInac = estNorm;
this.estDesp = estNorm;  
this.estDesc = estDesc;
this.bordeinf = '';
this.actual = null;
this.padre = null;
this.ocultable = true;
this.elementos = new Array();
this.agregar = oGrItems_agregar; 
this.cerrar = oGrItems_cerrar; 
this.abrir = oGrItems_abrir;
this.dibujar= oGrItems_dibujar; 
this.situar = oGrItems_situar;
this.mostrar = oGrItems_mostrar;
this.ocultar = oGrItems_ocultar;
this.dibujaMenus = oGrItems_ponMenus;
/*========================================================================================
FUNCION:		oGrItems_abrir(evnt) 
ARGUMENTOS:		evnt: evento que dispara este m�todo (objeto event)
DEVUELVE:		---
DESCRIPCION:	Abre un cuadro con los elementos que forman el men�. Esta funci�n est�
				vinculada al evento de entrada del rat�n al bloque del men�. 
				Es necesaria para los navegadores NN. Estos cuando abren un cuadro, abren 
				los cuadros de los que dependan (los que contienen a los item padres).
========================================================================================*/
function oGrItems_abrir(evnt) {
if (this.cuerpoHtml.style) 
	{ 
	if(evnt) evnt.cancelBubble = true; 
	if (this.padre) this.padre.grPadre.abrir();
	} 
else{
	if (this.padre)
		{
		this.padre.resaltar(true);
		this.padre.grPadre.abrir(evnt);
		}
	}
this.mostrar();
this.ocultable = false;
}
/*========================================================================================
FUNCION:		oGrItems_mostrar()
ARGUMENTOS:		---
DEVUELVE:		---
DESCRIPCION:	Hace visible el bloque HTML asociado a este objeto oGrItems, o sea, el cuadro
				con los elementos oItemJer contenidos en �l.
========================================================================================*/
function oGrItems_mostrar() {
if (this.cuerpoHtml.style) 
	this.cuerpoHtml.style.visibility = "visible";
else
	this.cuerpoHtml.visibility = "show";
}

/*========================================================================================
FUNCION:		oGrItems_ocultar(cnt)
ARGUMENTOS:		cnt: tiempo que tardar� en actuar la funci�n (opcional).
DEVUELVE:		---
DESCRIPCION:	Pone en oculta el bloque HTML asociado al objeto, o sea, el cuadro con los
				elementos oItemJer que forman el men�. El argumento indica el tiempo que debe
				esperar antes de cerrar la capa, si no existe el cierre es inmediato.Antes
				de cerrar comprueba que la capa tiene en true la propiedad ocultable.
========================================================================================*/
function oGrItems_ocultar(cnt) {
//alert(cnt)
//cnt=2500;
if (cnt)
	setTimeout(this.vble+".ocultar()", cnt)
else{
	if (this.ocultable)
		{
		if (this.cuerpoHtml.style) 
			this.cuerpoHtml.style.visibility = "hidden";
		else
			this.cuerpoHtml.visibility = "hide";
		this.padre.resaltar(false);	
		}
	}
}
/*========================================================================================
FUNCION:		oGrItems_cerrar(evnt)
ARGUMENTOS:		evnt: evento que dispara la funci�n (si existe)
DEVUELVE:		---	
DESCRIPCION:	Cierra un grupo de items (oGrItems). Este cierre implica, no s�lo ocultar 
				la capa asociada, sino tambi�n las enlazadas que estuvieran abiertas. El
				cierre se producir� cuando el rat�n sale del bloque HTML asociado al objeto.
				Al cerrar un men� se cierran los menus padres del actual, si tienen su
				propiedad ocultable a true.
				MSIE comprueba si el rat�n entra en un hijo o un padre antes de cerrar.
				En NS se cierran todos los relacionados, se abrir�n si el movimiento del
				rat�n lo requiere.
========================================================================================*/
function oGrItems_cerrar(evnt) { 
obItems = this.cuerpoHtml;
var hijos;
this.ocultable = true;
switch (miNavegador.modVer){
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
	if(this.padre && event.toElement){
		this.ocultable = (!obItems.contains(event.toElement)) && 	
		                 (event.toElement.id != this.padre.ident);
		}
case "NS5":
	evnt.cancelBubble = true;			
	if (this.padre)
		{
		if (this.ocultable)
			{
//			this.ocultar(250);
//RJMC	//tiempo en que Quita el resaltado del menu seleccionado
			this.ocultar(2);
			this.padre.grPadre.cerrar(evnt);
			}
		}	 
	break;
case "NS4":
	this.ocultable = true;
	if (this.padre!=null){
		this.ocultar(240);
		this.padre.grPadre.cerrar(evnt);
		}
	break;
	}
}
/*========================================================================================
FUNCION:		oGrItems_agregar(tit, enlace, desc, enlazado, tipo) 
ARGUMENTOS:		tit: cadena con el t�tulo que aparecer� en el item
				enlace: direcci�n URL a la que apunta el item.	
				desc: nota explicativa que aparecer� al pasar el rat�n	
				enlazado: objeto oGrItems que se desplegar� al pasar el rat�n (si existe)
				dest:donde se abre la nueva p�gina
				tipo: 0, el enlazado se abre debajo; 1: se abre a la derecha
DEVUELVE:		---
DESCRIPCION:	A�ade elementos al objeto oGrItem. Estos objetos pueden ser items de 
				men� que enlazan con otras p�ginas o pueden a su vez ser otros objetos 
				oGrItem, es decir, tener menus enlazados.
========================================================================================*/
function oGrItems_agregar(tit, enlace, desc_enl, dest, tipo) 
{
var ind = this.elementos.length; 
var identit = this.ident+"_"+ind;
this.elementos[ind] = new oItemJer(identit, tit, enlace, this, desc_enl, dest);
if (desc_enl.constructor==oGrItems)
	{ 
	desc_enl.padre = this.elementos[ind];
	desc_enl.tipo = tipo;
	}	
} 

/*========================================================================================
FUNCION:		oGrItems_situar(posX, posY)
ARGUMENTOS:		posX, posY : coordenadas de pantalla horizontal y vertical
DEVUELVE:		---
DESCRIPCION:	Situa en pantalla el bloque HTML asociado al objeto.
========================================================================================*/
function oGrItems_situar(posX, posY)
{
//RJMC
//siva posX = 105;posY = posY-21;
// posX = 128; //123 posici�n horizontal menu 2
// posY = posY-1; //posY-36; //posY-21
switch (miNavegador.modVer){
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
case "NS5":
	this.cuerpoHtml.style.left = posX;
	this.cuerpoHtml.style.top = posY;
	break;
case "NS4":
	this.cuerpoHtml.pageX = posX;
	this.cuerpoHtml.pageY = posY;
	break;
	}	
}
/*========================================================================================
FUNCION:		oGrItems_dibujar(posX, posY, ancho, alto) 
ARGUMENTOS:		posX, posY: situaci�n del objeto
				ancho, alto: dimensiones del objeto
DEVUELVE:		---
DESCRIPCION:	Crea los elementos HTML asociados al objeto oGrItem. En el caso de MSIE o NS6
				utiliza bloques DIV, para NS4 se usan elementos LAYER. El bloque llevar� 
				asociados eventos de rat�n si es un bloque secundario (que se despliega a 
				petici�n de un elemento del men�). Los principales, siempre visibles, no 
				vinculan ning�n evento.
========================================================================================*/
function oGrItems_dibujar(posX, posY, ancho, alto) { 
var ind;
var clase = 'class="'+this.estBase+'" '; 
var capa = this.ident; 
var activar='', desact='';
if (!this.visible)
	{
	activar = 'onmouseover ="'+this.vble+'.abrir(event)"'; 
	desact = 'onmouseout="'+this.vble+'.cerrar(event)"';
	}
switch (miNavegador.modVer){
case "IE4":
case "IE5":
case "IE6":
case "IE7":
case "IE8":
case "NS5":   
//RJMC, a�adido border:0
	estilo = 'style="position:absolute; left: '+posX+'px; top:'+ posY; 
//	estilo = 'style="position:absolute; left: '+posX+'px; top:'+ posY; 
	estilo+= 'px; visibility: hidden; width:'+ancho+'px; height:'+alto+'px"'; 
	document.write('<div  id= "' + this.ident+ '"' + estilo + clase + ' ');
	document.write(activar+' ' +desact +' >'); 
	for (ind in this.elementos)
			this.elementos[ind].dibujar(ind,ancho); 
	document.write('</div>');
	//Capa descripciones 
	document.write('<div id= "' + this.descr+'"');
	document.write(' class= "'+this.estDesc+'"');
	document.write(' style=" position:absolute; visibility:hidden">'); 
	document.write(this.ident+'</div>'); 
	this.cuerpoHtml = objHtml(this.ident);
	this.descrHtml = objHtml(this.descr);
	this.cuerpoHtml.style.height="auto";
	break;
case "NS4":
	capa = this.ident;
	altoit = parseInt(document.classes[this.estItemAct].all.fontSize)*1.2;
	if (document.classes[this.estItemAct].all.paddingTop)
	   altoit += parseInt(document.classes[this.estItemAct].all.paddingTop)
	if (document.classes[this.estItemAct].all.paddingBottom)
	   altoit += parseInt(document.classes[this.estItemAct].all.paddingBottom)    
	altocapa = this.elementos.length*altoit - 6;
	document.ids[capa].paddingTop = altocapa;
	document.ids[capa].width = ancho;	
	document.write('<layer id= "' +capa+ '" '+clase);
	document.write( activar + ' '+desact +' visibility="hidden" width="'+ancho+'"');
	document.write(' height="'+altocapa+'"');
	document.write(' bgcolor="'+document.classes[this.estBase].all.backgroundColor+'">');
	for (ind=0;ind < this.elementos.length; ind++)
		this.elementos[ind].dibujar(ind, ancho, altoit); 
	document.write('</layer>');
	document.layers[capa].top = posY; 
	document.layers[capa].left = posX;
	//Dibuja capa para la descripci�n del men�.
	document.write('<layer id="'+ this.descr +'" class= "'+this.estDesc+'" ');
	document.write('visibility="hidden">');
	document.write('menu: '+this.ident+'</layer>');
	this.cuerpoHtml = document.layers[this.ident];
	this.descrHtml = document.layers[this.descr];
	break;
	}
	if (this.visible) this.mostrar(null);
}
/*Dibuja un men� con todos sus enlazados*/
function oGrItems_ponMenus(px, py, an)
 {
 var ind;
 with (this){
	for (ind=0; ind<elementos.length; ind++)
		{
		if (elementos[ind].enlazado)
		//RJMC ancho de menu2
			elementos[ind].enlazado.dibujaMenus(px, py, '132')
		}
	dibujar(px,py,an,0);
	}	
 }
}
/************************* FIN DEL OBJETO oGrItems********************/
</script>

<?php
	/*Dim Fila
	Dim NombrePadre
	Dim Posicion
	Dim Vertical
	Dim Arreglo(7,70)*/
//on error resume next

//'for i=0 to cint(ubound(SoloArrMenus,2))
//'    for j=0 to ubound(SoloArrMenus,1)
//'	    echo SoloArrMenus(j,i)& "- "
//'	next
//'	echo "<br>"
//'next
//'echo err.description
//'response.end
//echo count($SoloVar_TotalFilasMenu)."<br/>";
//echo $SoloVar_TotalFilasMenu;

for ($i=0; $i < $SoloVar_TotalFilasMenu; $i++){
    $Arreglo[$i][0] = $SoloArrMenus[$i][0];
    $Arreglo[$i][1] = $SoloArrMenus[$i][1];
    $Arreglo[$i][2] = $SoloArrMenus[$i][2];
    $Arreglo[$i][3] = $SoloArrMenus[$i][3];
    $Arreglo[$i][4] = $SoloArrMenus[$i][4];
    $Arreglo[$i][5] = $SoloArrMenus[$i][5];
    $Arreglo[$i][6] = $SoloArrMenus[$i][6];
}
//printArray($Arreglo);
/***********Añade los módulos*************/
//dim ArrModuPrivado(2,20)
$bFila = 0; //'sb
//echo $SoloArrMenus[1][0]." ".$SoloArrMenus[5][0];
for ($uFila = 0; $uFila < $SoloVar_TotalFilasMenu; $uFila++){ //'ubound(SoloArrMenus,2)
    if ($uFila == 0){
        $ArrModuPrivado[$bFila][0] = $SoloArrMenus[$uFila][1]; //'c�digo
        $ArrModuPrivado[$bFila][1] = $SoloArrMenus[$uFila][5]; //'descripci�n
//' 	   echo "<br>uno="&ArrModuPrivado(0,bFila)&"*"&ArrModuPrivado(1,bFila)
    }

    $z = $uFila - 1;

    if ($z<0) $z=0;
//'   Descripcion <> Descripcion
    if (trim($ArrModuPrivado[$bFila][1]) != trim($SoloArrMenus[$uFila][5])){
        $bFila++;
        $ArrModuPrivado[$bFila][0] = $SoloArrMenus[$uFila][1]; //'c�digo
        $ArrModuPrivado[$bFila][1] = $SoloArrMenus[$uFila][5]; //'descripci�n
        //echo "<br>tran = " . $ArrModuPrivado[3][$u];
    }
    //echo "<br>trx = " . $ArrModuPrivado[3][$u];
}
//printArray($ArrModuPrivado);
$totReg = $SoloVar_TotalFilasMenu;
//echo $totReg;

//'for i=0 to ubound(ArrModuPrivado,2)
//'	echo "<br>ArrModuPrivado = "&ArrModuPrivado[0][$i]& "- " & ArrModuPrivado[1][$i]
//'next

//'echo "b-->" & SoloVar_TotalFilasModulo
//'re
//echo $bFila;
for ($jFila = 0; $jFila <= $bFila; $jFila++){
    //'	echo "<br>tran = " & ArrModuPrivado(0,j) & "  -  " & ArrModuPrivado(1,j)
    $Arreglo[$totReg][1] = 0; //'TRANSACCION (NO TIENE)
    $Arreglo[$totReg][0] = $ArrModuPrivado[$jFila][0]; //'MODULO
    $Arreglo[$totReg][2] = $ArrModuPrivado[$jFila][1]; //'PROGRAMA
    $Arreglo[$totReg][3] = $ArrModuPrivado[$jFila][1]; //'DESCRIPCION TRANSACCION
    $Arreglo[$totReg][4] = 0;                       //'TIPO MENU
    $Arreglo[$totReg][5] = $jFila;                   //'TIENE HIJOS
    //'	Arreglo(6][totReg] = ArrModuPrivado(6,jFila)
    //printArray($Arreglo[$totReg]);
    $totReg++;
}
//printArray($Arreglo);
//echo $totReg;
$totReg--;

//'for i=0 to ubound(Arreglo,2)
//'	echo "<br>Arreglo = "&Arreglo[0][$i]& "- " & Arreglo[1][$i]& "- " & left(Arreglo[2][$i],26)& "- " & Arreglo[3][$i]& "- " & Arreglo[4][$i]& "- " & Arreglo[5][$i]  &" - " & Arreglo[6][$i]
//'next
//'echo totreg-2
//'re
/************Fin de añade modulos****************/

if ($bandLogin){
    $Posicion = 0;
    $bandera = 0;
//'''		conta=0
    $Vertical = 90; //'Posici�n Y desde donde comienza el Menu

    for ($Fila = 0; $Fila <= $totReg; $Fila++){
        $TIPOMENU = $Arreglo[$Fila][4]; //'0=MODULO,1=PROGRAMA
//echo $TIPOMENU."<br>";
        if ($TIPOMENU == "0"){

            if ($bandera == 0){
                $Posicion = 50;//'4;	//'posici�n horizontal X
//'					Vertical=66'65'109'102 ' Donde Inicia Posicion vertical desde el primer menu
                $bandera=1;
            }else{
                $Posicion += 90; //'133
//'					Vertical = 66'Vertical + 36'300'100 'distancia entre cada uno, si deseo horizontal cambio aqui
//'					Posicion=0'4
            }
            $Ancho = 91;//'134 '133

//'				Titlemenu = replace(Arreglo(3,Fila)," ","")
            $Titlemenu = str_replace(" ", "", $Arreglo[$Fila][3]); //'& "&rs=123"
//'				echo "<br>Titlemenu=" & Arreglo(2,Fila) & " - " & Arreglo(3,Fila) & " - " &Arreglo(7,Fila)
//echo $Titlemenu."<br>";
            $SoloTituloMenu = $Titlemenu . "CABECERA";
            $TRANSACCION = $Arreglo[$Fila][3];
?>				
<script type="text/javascript">
        var <?php echo $SoloTituloMenu; ?> = new oGrItems('<?php echo $SoloTituloMenu; ?>', 'SoloStyle_mnfondo', 'SoloStyle_mnfondomenu', 'SoloStyle_mnactivo1', 'descrip', true);
        <?php echo $SoloTituloMenu; ?>.agregar('<?php echo $TRANSACCION; ?>', '', <?php echo $Titlemenu; ?>, '', 0);
        <?php echo $SoloTituloMenu; ?>.dibujaMenus(<?php echo $Posicion; ?>,<?php echo $Vertical; ?>, <?php echo $Ancho; ?>);
</script>
<?php //'''conta=conta+1
        }else{
//				'echo "<br>DIBUJAR LOS MENUS HIJOS"
            $MODULO = $Arreglo[$Fila][1];
//echo $MODULO."<br>";
//				'''''NombrePadre = BuscarNombrePadre(Arreglo, MODULO)
            $NombrePadre = $Arreglo[$Fila][5]; //'LA DESCRIPCION DEL MODULO
//echo $NombrePadre."<br>";
//'				echo "<br>NombrePAdre--> "&MODULO & " = " & NombrePadre
            CreaObjeto($Arreglo, $Fila, str_replace(" ", "", $NombrePadre), $SoloVar_TotalFilasMenu); //'Valida si el objeto fue creado, y si no... lo crea
        }
    }
}

//'===========================================================================================
//'===========================================================================================

function CreaObjeto($pArr, $pFila, $pPadre, $SoloVar_TotalFilasMenu){
//'echo "<br>Padre="&pPadre& " * pFila="&pFila
	//Dim Fila
    $NombrePadre = str_replace(".","", $pPadre);
?>
<script type="text/JavaScript">
     var <?php echo $NombrePadre; ?> = new oGrItems('<?php echo $NombrePadre; ?>', 'SoloStyle_mnfondo', 'SoloStyle_mnnormal', 'SoloStyle_mnactivo', 'descrip', false);
</script>
<?php
//echo $SoloVar_TotalFilasMenu."<br>";
//printArray($pArr);
    for ($Fila = 0; $Fila < $SoloVar_TotalFilasMenu; $Fila++){ //'Recorre en busca de todos los hijos y los crea uno a uno
//'			echo "<br>Padre=="& pArr(1, pFila) & " compara a "& pArr(1, Fila)
        if ($pArr[$pFila][1] == $pArr[$Fila][1]){// 'and pArr(6, Fila)<>true then 'Si el hijo tiene mas hijos
            $TRANSACCION = $pArr[$Fila][0];
            $MODULO = $pArr[$Fila][1];
            $PROGRAMA = $pArr[$Fila][2];
            $DESTRAN = $pArr[$Fila][3];
//echo "$TRANSACCION $MODULO $PROGRAMA $DESTRAN<br>";
            //$Ruta= "?SoloPage=solotrn_Log.php&co_modu=$MODULO&co_tran=$TRANSACCION&no_tran=$PROGRAMA&ds_tran=$DESTRAN";
            //$Ruta= "?SoloPage=$PROGRAMA&co_modu=$MODULO&co_tran=$TRANSACCION&no_tran=$PROGRAMA&ds_tran=$DESTRAN";
            $Ruta= "?SoloPage=$PROGRAMA";
            if (trim(substr($PROGRAMA,0,7)) == "default")
                $Ruta = $PROGRAMA;
?>
<script type="text/JavaScript">
    <?php echo $NombrePadre; ?>.agregar('&#8226; <?php echo $DESTRAN; ?>', '<?php echo $Ruta; ?>', 'Texto descriptivo');
</script>
        <?php
        }
    }
}
?>